#ifndef _ByteImage_H_
#define _ByteImage_H_

#pragma once
#include "Image.h"

class ByteImage : public Image {
private:
	unique_ptr<Byte[]> imageBufferR, imageBufferG, imageBufferB;

public:
	ByteImage(int width, int height);
	ByteImage(string filename);
	~ByteImage() {}

	void setColor(int x, int y, const Color &color);
	void addColor(int x, int y, const Color &color);
	void clearColor(int x, int y);
	Color getColor(int x, int y) const;
	void getColor(Color & color, int x, int y) const;
	Color getOutputColor(int x, int y) const;
	void getOutputColor(Color & color, int x, int y) const;

	int getColor_int(int x, int y) const;
	int getOutputColor_int(int x, int y) const;
};

#endif // _ByteImage_H_